CSS ì¬ì©ì ì ì ê°ì¡° íì API, í ì€íž ì í ë ìŽìŽ ì°ì ìì ì ìŽ, ë€ìí íë«íŒ ë° ì¥ì¹ìì êµì ì¬ì©ì륌 ìí ì ê·Œì± í¥ìì ëí ì¬ìžµ ë¶ì.
CSS ì¬ì©ì ì ì ê°ì¡° íì ì°ì ìì: ì ì ì ê·Œì±ì ìí í ì€íž ì í ë ìŽìŽ êŽëЬ
ì¹ì ì ìžê³ì ìž íë«íŒìŽë©°, ìžìŽ, ìì¹ ëë ì¥ì¹ì êŽê³ììŽ ëªšë ì¬ëìê² ìŒêŽëê³ ì ê·Œ ê°ë¥í ì¬ì©ì 겜íì 볎ì¥íë ê²ìŽ ê°ì¥ ì€ìí©ëë€. ì¬ì©ì 겜íìì ì¢ ì¢ ê°ê³Œëë 잡멎 ì€ íëë í ì€íž ì íì ëë€. í ì€íž ì í ë ìŽìŽë ê°ëšíŽ ë³ŽìŽì§ë§ CSS륌 ì¬ì©íì¬ ë ëì ìê°ì ì íž, í¥ìë ì ê·Œì±, ì¬ì§ìŽ í¥ìë êž°ë¥ì ì ê³µíëë¡ ì¬ì©ì ì ìí ì ììµëë€. ìŽ ëžë¡ê·ž ê²ì묌ììë CSS ì¬ì©ì ì ì ê°ì¡° íì API륌 ìŽíŽë³Žê³ , í ì€íž ì í ë ìŽìŽ ì°ì ìì륌 ì ìŽíê³ ì ì ì ê·Œì±ì ìíŽ ê°ì¡° íì륌 êŽëЬíë ë°©ë²ì ì€ì ì ë¡ëë€.
í ì€íž ì í ë ìŽìŽ ìŽíŽ
ì¬ì©ìê° ì¹ íìŽì§ìì í
ì€ížë¥Œ ì íí멎 ëžëŒì°ì ë ìŒë°ì ìŒë¡ í°ì í
ì€ížê° ìë íëì ë°°ê²œìž êž°ë³ž ê°ì¡° íì륌 ì ì©í©ëë€. ìŽ ê°ì¡° íìë ::selection ê°ì ììì ìíŽ ì ìŽë©ëë€. ê·žë¬ë CSS Houdini ë° ì¬ì©ì ì ì ê°ì¡° íì APIì ë±ì¥ìŒë¡ ê°ë°ìë ìŽì ì¬ë¬ ê°ì¡° íì ë ìŽìŽë¥Œ ì ìíê³ ì°ì ìì륌 ì ìŽíë êž°ë¥ì í¬íšíì¬ í
ì€ížê° ê°ì¡° íìëë ë°©ìì íšì¬ ë ì ì ìŽí ì ììµëë€.
í ì€íž ì í ë ìŽìŽë Ʞ볞ì ìŒë¡ ìŒë° ìœí ìž íëŠ ìì ë ëë§ëë ìê°ì ë ìŽìŽì ëë€. ì íí í ì€íž ë° êž°í ê°ì¡° íìë ììì 몚ìì ì¬ì©ì ì ìí ì ììµëë€. ìŽ ë ìŽìŽê° ë€ë¥ž CSS ìì±ê³Œ ìíž ìì©íë ë°©ìì ìŽíŽíë ê²ì ìê°ì ìŒë¡ ë§€ë ¥ì ìŽê³ ì ê·Œ ê°ë¥í ì¹ ê²œíì ë§ëë ë° ì€ìí©ëë€.
CSS ì¬ì©ì ì ì ê°ì¡° íì API ìê°
CSS ì¬ì©ì ì ì ê°ì¡° íì APIë ê°ë°ìê° CSS êž°ë¥ì íì¥í ì ìëë¡ íë CSS Houdini API ì íêµ°ì ìŒë¶ì
ëë€. ::highlight ê°ì ììì CSS.registerProperty() ë©ìë륌 ì¬ì©íì¬ ì¬ì©ì ì ì ê°ì¡° íì륌 ì ìíë ë°©ë²ì ì ê³µí©ëë€. ìŽë¥Œ íµíŽ êž°ë³žì ìž ::selection ì€íìŒì ëìŽ ëì± ì êµíê³ ì ì°í í
ì€íž ê°ì¡° íìê° ê°ë¥í©ëë€.
죌ì ê°ë :
::highlight(highlight-name): ìŽ ê°ì ììëhighlight-nameìŽëŒë í¹ì ì¬ì©ì ì ì ê°ì¡° íì륌 ëììŒë¡ í©ëë€. 뚌ì ê°ì¡° íì ìŽëŠì ë±ë¡íŽìŒ í©ëë€.CSS.registerProperty(): ìŽ ë©ìëë 구묞, ìì ëì, ìŽêž° ê° ë° ì°ê²°ë ì¬ì©ì ì ì ê°ì¡° íì ìŽëŠì í¬íšíì¬ ìë¡ìŽ ì¬ì©ì ì ì ìì±ì ë±ë¡í©ëë€.- ê°ì¡° íì íìží°: ê°ì¡° íì륌 ë ëë§íë ë°©ë²ì ê²°ì íë ì¬ì©ì ì ì íìží°(ì: ê·žëŒë°ìŽì , ìŽë¯žì§ ëë ë ë³µì¡í ìê° íšê³Œ ì¶ê°). ì¬êž°ìë ì¢ ì¢ CSS íìží API륌 ì¬ì©íë ê²ìŽ í¬íšë©ëë€.
ê°ì¡° íì ì°ì ìì ì ìŽ
ì¬ì©ì ì ì ê°ì¡° íì APIì ê°ì¥ ê°ë ¥í êž°ë¥ ì€ íëë ìë¡ ë€ë¥ž ê°ì¡° íì ë ìŽìŽì ì°ì ìì륌 ì ìŽíë êž°ë¥ì ëë€. ìŽë ì¬ë¬ ê°ì ê²¹ì¹ë ê°ì¡° íìê° ìê³ ë§š ìì íìëìŽìŒ íë ê°ì¡° íì륌 ê²°ì íŽìŒ í ë ì€ìí©ëë€.
ê°ì¡° íìì ì°ì ììë CSSìì ì ìë ììì ë°ëŒ ê²°ì ë©ëë€. ì€íìŒìížìì ëì€ì ì ìë ê°ì¡° íìë ì°ì ììê° ë ëê³ ìŽì ê°ì¡° íì ìì ë ëë§ë©ëë€. ìŽë ìë¡ ë€ë¥ž z-index ê°ì ê°ì§ ììì ì€íí¹ ììì ì ì¬í©ëë€.
ìì : Ʞ볞 ê°ì¡° íì ì°ì ìì
ë€ì CSS륌 ê³ ë €íììì€.
::selection {
background-color: lightblue;
color: black;
}
::highlight(custom-highlight) {
background-color: lightcoral;
color: white;
}
ìŽ ê²œì° ::selection ë° ::highlight(custom-highlight)ìŽ ëªšë ëìŒí í
ì€íž ë²ìì ì ì©ë멎 ::highlight(custom-highlight)ê° ì€íìŒìížìì ëì€ì ì ìëêž° ë묞ì ì°ì í©ëë€.
ìì : ì¬ì©ì ì ì ê°ì¡° íì ë±ë¡
::highlight륌 ì¬ì©íêž° ì ì ìŒë°ì ìŒë¡ JavaScriptìì ì¬ì©ì ì ì ìì±ì ë±ë¡íŽìŒ í©ëë€. ë€ìì ëšìíë ìì
ëë€.
if (CSS.registerProperty) {
CSS.registerProperty({
name: '--custom-highlight-color',
syntax: '',
inherits: false,
initialValue: 'yellow',
});
}
ê·žëŠ¬ê³ íŽë¹ CSS:
::highlight(my-custom-highlight) {
background-color: var(--custom-highlight-color);
}
ì¬ì©ì ì ì ê°ì¡° íì ì°ì ììì ëí ì€ì ì¬ì© ì¬ë¡
ê°ì¡° íì ì°ì ìì륌 ì ìŽí멎 ì¬ì©ì 겜íì í¬ê² í¥ììí¬ ì ìë ëª ê°ì§ ì€ì ì¬ì© ì¬ë¡ë¥Œ ìŽíŽë³Žê² ìµëë€.
1. ê²ì 결곌 ê°ì¡° íì
ê²ì 결곌륌 íìí ë ìœí ìž ëŽìì ê²ììŽë¥Œ ê°ì¡° íìíë 겜ì°ê° ë§ìµëë€. ì¬ì©ìê° ê²ììŽê° í¬íšë í ì€ížë¥Œ ì ííë 겜ì°ìë ìíë íšê³Œì ë°ëŒ ì í ê°ì¡° íì ìëì ê²ì ê°ì¡° íìê° ê³ì íìëëë¡ í ì ììµëë€.
ìë늬ì€: ì¬ì©ìê° ì¹ íìŽì§ìì "ì ì ì ê·Œì±"ì ê²ìí©ëë€. ê²ì 결곌ë ë žëììŒë¡ ê°ì¡° íìë©ëë€. ê·žë° ë€ì ì¬ì©ìë "ì ì ì ê·Œì±"ì í¬íšíë í ì€íž ë¶ë¶ì ì íí©ëë€.
구í:
.search-highlight {
background-color: yellow;
}
::selection {
background-color: lightblue;
color: black;
}
.search-highlight ë€ì ::selectionì ì ìí멎 ì í ê°ì¡° íìê° ë§š ìì íìë©ëë€. ê²ììŽê° ì íë 겜ì°ìë íì ê°ì¡° íìëëë¡ ìì륌 ë°ê¿ ì ììµëë€.
2. ìœë ížì§êž°ì 구묞 ê°ì¡° íì
ìœë ížì§êž°ë ê°ë ì±ì ëìŽêž° ìíŽ êµ¬ë¬ž ê°ì¡° íì륌 ì¬ì©íë 겜ì°ê° ë§ìµëë€. ì¬ì©ìê° ìœë ëžë¡ì ì íí ë ìœë 구조륌 볎졎íêž° ìíŽ ì í ê°ì¡° íì ìëì 구묞 ê°ì¡° íìê° ê³ì íìëëë¡ í ì ììµëë€.
ìë늬ì€: ì¬ì©ìê° ìšëŒìž ìœë ížì§êž°ìì Python ìœë ëžë¡ì ì íí©ëë€. ìœë ížì§êž°ë 구묞 ê°ì¡° íì륌 ì¬ì©íì¬ í€ìë, ë³ì ë° ì£Œìì 구ë³í©ëë€.
구í:
.keyword {
color: blue;
}
.comment {
color: gray;
}
::selection {
background-color: rgba(0, 0, 255, 0.1);
}
ìŽ ê²œì° êµ¬ë¬ž ê°ì¡° íì ì€íìŒ(.keyword, .comment)ìŽ ëšŒì ì ì©ëê³ ::selection ê°ì¡° íìê° ë§š ìì ë ëë§ëìŽ êµ¬ë¬ž ê°ì¡° íì륌 ê°ëŠ¬ì§ ìê³ ë¯žë¬í ìê°ì ì ížë¥Œ ì ê³µí©ëë€.
3. íì ë° ì£Œì
ê³µë 묞ì ëë 죌ì ë구ìì ìë¡ ë€ë¥ž ì¬ì©ìê° í ì€ížì ë€ë¥ž ì¹ì ì ê°ì¡° íìí ì ììµëë€. ê°ì¡° íì ì°ì ìì륌 ì ìŽí멎 ìë¡ ë€ë¥ž ì¬ì©ìì ê°ì¡° íì륌 구ë³íê³ ëª íí ìê°ì ê³ìžµ 구조륌 ì ì§íë ë° ëììŽ ë©ëë€.
ìë늬ì€: ìž ëª ì ì¬ì©ì(ìšëЬì€, ë°¥, 찰늬)ê° ë¬žììì ê³µë ìì íê³ ììµëë€. ìšëЬì€ë í ì€ížë¥Œ ë ¹ììŒë¡ ê°ì¡° íìíê³ , ë°¥ì í ì€ížë¥Œ ë žëììŒë¡ ê°ì¡° íìíê³ , 찰늬ë í ì€ížë¥Œ 빚ê°ììŒë¡ ê°ì¡° íìí©ëë€.
구í:
.alice-highlight {
background-color: green;
}
.bob-highlight {
background-color: yellow;
}
.charlie-highlight {
background-color: red;
}
::selection {
background-color: rgba(0, 0, 255, 0.1);
}
::selection ê°ì¡° íìë ì¬ì©ì í¹ì ê°ì¡° íì ìì ë ëë§ëìŽ ì¬ì©ìê° êž°ì¡Ž 죌ìì ìì í ê°ëŠ¬ì§ ìê³ í
ì€ížë¥Œ ì íí ì ììµëë€.
4. ììì ì€ë¥ ê°ì¡° íì
ììì ì íšì±ì ê²ì¬í ë ì€ë¥ê° ìë íë륌 ëª ííê² ëíëŽë ê²ìŽ ì€ìí©ëë€. ì¬ì©ì ì ì ê°ì¡° íìë ì€ë¥ íë륌 ìê°ì ìŒë¡ ê°ì¡°íë ë° ì¬ì©í ì ììµëë€. ê°ì¡° íì ì°ì ìì륌 ì ìŽí멎 ì¬ì©ìê° ì€ë¥ íë륌 ì íí 겜ì°ìë ì€ë¥ ê°ì¡° íìê° ê³ì íìë©ëë€.
ìë늬ì€: ì¬ì©ìê° ì못ë ìŽë©ìŒ 죌ìë¡ ììì ì ì¶í©ëë€. ìŽë©ìŒ íëë ì€ë¥ë¥Œ ëíëŽêž° ìíŽ ë¹šê°ììŒë¡ ê°ì¡° íìë©ëë€.
구í:
.error-highlight {
background-color: red;
color: white;
}
::selection {
background-color: rgba(0, 0, 255, 0.1);
}
.error-highlightë ì€ë¥ íëì ì ì©ëê³ ::selection ê°ì¡° íìë ë§š ìì ë ëë§ëìŽ ì¬ì©ìê° ì€ë¥ë¥Œ ìžì§í멎ì íë륌 ì íí ì ììµëë€.
ì ê·Œì± ê³ ë € ì¬í
í ì€íž ê°ì¡° íì륌 ì¬ì©ì ì ìí ë ì ê·Œì±ì ê³ ë €íë ê²ìŽ ì€ìí©ëë€. ê°ì¡° íì ìììŽ í ì€íž ìì곌 ì¶©ë¶í ëë¹ë¥Œ ì ê³µíì¬ WCAG(ì¹ ìœí ìž ì ê·Œì± ì§ì¹š) íì€ì 충족íëì§ íìžíììì€. ëí ììì ìžìíë ë° ìŽë €ììŽ ìë ì¬ì©ì륌 ìíŽ ë첎 ìê°ì ì ížë¥Œ ì ê³µíììì€.
1. ìì ëë¹
ìì ëë¹ ê²ì¬êž°ë¥Œ ì¬ì©íì¬ ê°ì¡° íì 배겜ì곌 í ì€íž ìì ê°ì ëë¹ ë¹ìšìŽ WCAGì ì§ì ë ìµì ì구 ì¬íì 충족íëì§ íìžíììì€. ìŒë° í ì€ížì ê²œì° ìµì 4.5:1, í° í ì€ížì ê²œì° 3:1ì ëë¹ ë¹ìšìŽ ê¶ì¥ë©ëë€.
2. ë첎 ìê°ì ì íž
ìì ìžìë ê°ì¡° íìë í ì€ížë¥Œ ëíëŽë ë첎 ìê°ì ì ížë¥Œ ì ê³µíììì€. ì¬êž°ìë ë€ë¥ž êžêŒŽ 굵Ʞ ì¬ì©, ë°ì€ ì¶ê° ëë í ë늬 ì¬ì©ìŽ í¬íšë ì ììµëë€.
3. í€ë³Žë ì ê·Œì±
í€ë³Žë륌 ì¬ì©íì¬ í
ì€ížë¥Œ íìí ë ì¬ì©ì ì ì ê°ì¡° íìë ì ì©ëëì§ íìžíììì€. :focus ê°ì íŽëì€ë¥Œ ì¬ì©íì¬ í¬ì»€ì€ê° ìë ììì ì€íìŒì ì§ì íê³ íì¬ ì íë ìì륌 ëª
ííê² ìê°ì ìŒë¡ íìíììì€.
4. í멎 ìœêž° íë¡ê·žëš ížíì±
í멎 ìœêž° íë¡ê·žëšìŒë¡ ì¬ì©ì ì ì ê°ì¡° íì륌 í ì€ížíì¬ ìê° ì¥ì ê° ìë ì¬ì©ììê² ê°ì¡° íìë í ì€ížê° ì ëë¡ ìë €ì§ëì§ íìžíììì€. ARIA ìì±ì ì¬ì©íì¬ ê°ì¡° íìë í ì€ížì ëí ì¶ê° 컚í ì€íž ë° ì 볎륌 ì ê³µíììì€.
êµì í(i18n) ê³ ë € ì¬í
í ì€íž ì í ë° ê°ì¡° íìë ìžìŽì ì€í¬ëŠœížì ë°ëŒ ë€ë¥Žê² ëìí ì ììµëë€. ì¬ì©ì ì ì ê°ì¡° íì륌 구íí ë ë€ì êµì í 잡멎ì ê³ ë €íììì€.
1. í ì€íž ë°©í¥(RTL/LTR)
ê°ì¡° íì ë°©í¥ìŽ í ì€íž ë°©í¥ê³Œ ìŒì¹íëì§ íìžíììì€. ì€ë¥žìªœìì ìŒìªœ(RTL) ìžìŽììë ê°ì¡° íìê° ì€ë¥žìªœìì ììíì¬ ìŒìªœìŒë¡ íì¥ëìŽìŒ í©ëë€.
2. 묞ì ì§í©
ì¬ì©ì ì ì ê°ì¡° íìê° ì¬ë°ë¥Žê² íìëëì§ íìžíêž° ìíŽ ë€ë¥ž 묞ì ì§í©ìŒë¡ í ì€ížíììì€. ìŒë¶ 묞ì ì§í©ì ì ëë¡ ë ëë§íë €ë©Ž í¹ì êžêŒŽ ì€ì ëë ìžìœë©ìŽ íìí ì ììµëë€.
3. ëšìŽ ê²œê³
ëšìŽ ê²œê³ë ìžìŽì ë°ëŒ ë€ë¥Œ ì ììµëë€. ììŽìì ëšìŽ ë¬žìë¡ ê°ì£Œëì§ ìë 묞ìê° í¬íšëìŽ ìëëŒë ê°ì¡° íìê° ì 첎 ëšìŽì ì ì©ëëì§ íìžíììì€.
4. ìžìŽë³ ì€íìŒ ì§ì
ìœí
ìž ì ìžìŽì ë°ëŒ ë€ë¥ž ê°ì¡° íì ì€íìŒì ì ì©íŽìŒ í ì ììµëë€. :lang() ê°ì íŽëì€ë¥Œ ì¬ì©íì¬ í¹ì ìžìŽë¥Œ ëììŒë¡ íê³ ìžìŽë³ ì€íìŒì ì ì©íììì€.
ì: ìëìŽ(RTL)ë¡ í ì€íž ê°ì¡° íì:
:lang(ar) {
direction: rtl;
}
::selection {
background-color: lightblue;
color: black;
}
ê³ êž êž°ì ë° í¥í ë°©í¥
1. CSS íìží API
CSS íìží API륌 ì¬ì©í멎 JavaScript륌 ì¬ì©íì¬ íìží ë ŒëŠ¬ë¥Œ ì ìíì¬ ê³ ëë¡ ì¬ì©ì ì ìë ê°ì¡° íì륌 ë§ë€ ì ììµëë€. ìŽë¥Œ íµíŽ ì ëë©ìŽì ê°ì¡° íì ë§ë€êž°, ë³µì¡í ìê° íšê³Œ ì¶ê° ëë ìžë¶ ë°ìŽí° ìì€ì íµí©ê³Œ ê°ì êŽë²ìí ê°ë¥ì±ìŽ ìŽëŠœëë€.
2. ì¬ì©ì ì ì ê°ì¡° íì íìží°
CSS íìží APIì êž°ë¥ì íì¥íë ì¬ì©ì ì ì ê°ì¡° íì íìží°ë¥Œ ë§ë€ ì ììµëë€. ìŽë¥Œ íµíŽ ì¬ì¬ì© ê°ë¥í ê°ì¡° íì ë ŒëŠ¬ë¥Œ 캡ìííê³ ë€ë¥ž ìì ëë ê°ì¡° íì ììì ì ì©í ì ììµëë€.
3. JavaScript íë ììí¬ì íµí©
React, Angular ë° Vue.jsì ê°ì JavaScript íë ììí¬ë¥Œ ì¬ì©íì¬ ì¬ì©ì ì ì ê°ì¡° íì륌 ëì ìŒë¡ êŽëЬí ì ììµëë€. ìŽë¥Œ íµíŽ ì¬ì©ì ì ë ¥ ëë ë°ìŽí° ë³ê²œì ìëµíë ëíí ê°ì¡° íì ë구륌 ë§ë€ ì ììµëë€.
ëžëŒì°ì ížíì±
CSS ì¬ì©ì ì ì ê°ì¡° íì APIë ë¹êµì ìë¡ìŽ êž°ì ìŽë©° ëžëŒì°ì ížíì±ì ë€ë¥Œ ì ììµëë€. Can I use...ì ê°ì ì¹ì¬ìŽížìì ìµì ëžëŒì°ì ížíì± í륌 íìžíì¬ ëì ëžëŒì°ì ìì APIê° ì§ìëëì§ íìžíììì€. API륌 ì§ìíì§ ìë ìŽì ëžëŒì°ì ì ê²œì° íŽëЬí ëë ë첎 ë°©ë²ì ì¬ì©íë ê²ì ê³ ë €íììì€.
ê²°ë¡
CSS ì¬ì©ì ì ì ê°ì¡° íì APIë í ì€íž ì í ë ìŽìŽ ì°ì ìì륌 ì ìŽíê³ ì ì ì ê·Œì±ì ìíŽ ê°ì¡° íì륌 êŽëЬíë ê°ë ¥í ë°©ë²ì ì ê³µí©ëë€. ìŽ ëžë¡ê·ž ê²ì묌ìì ë Œìë 죌ì ê°ë 곌 êž°ì ì ìŽíŽíšìŒë¡ìš 몚ë ì¬ëì ìí ì¬ì©ì 겜íì í¥ììí€ë ìê°ì ìŒë¡ ë§€ë ¥ì ìŽê³ ì ê·Œ ê°ë¥íë©° êµì íë ì¹ ê²œíì ë§ë€ ì ììµëë€. ì¬ì©ì ì ì ê°ì¡° íì륌 구íí ëë íì ì ê·Œì±, êµì í ë° ëžëŒì°ì ížíì±ì ê³ ë €íììì€.
ê°ì¡° íì ì°ì ìì륌 ì ì€íê² êŽëЬíê³ ì ìžê³ ì¬ì©ìì ì구 ì¬íì ê³ ë €íì¬ ìê°ì ìŒë¡ ë§€ë ¥ì ìŽê³ ì ê·Œì±ìŽ ë°ìŽë ì¹ ê²œíì ë§ë€ ì ììµëë€. CSS ê°ì¡° íìì 믞ëë ë°ìŒë©° CSS íìží APIì ì¬ì©ì ì ì ê°ì¡° íì íìží°ê° ëì± íì ì ìŽê³ ì°œìì ìž ê°ì¡° íì êž°ì ì ìí êžžì ìŽìŽì£Œê³ ììµëë€.